package com.flyweight;

import jdk.nashorn.internal.runtime.linker.InvokeByName;

public class exampleInJDK {
    public static void main(String[] args) {
        Integer x = Integer.valueOf(111);
        Integer y = new Integer(111);
        Integer z = Integer.valueOf(111);
        Integer w = new Integer(111);

        System.out.println(x.equals(y)); //true 因为equals比较的是值
        System.out.println(x == y );// false  ==比较引用类型比的是地址值 可能是因为x是值，而y比较的时候拿到的是地址值所以不等
        System.out.println(x == z );// true 这是为啥  去看源码 ？？
        System.out.println(w == x );// false  ==比较引用类型比的是地址值 可能是因为x是值，而y比较的时候拿到的是地址值所以不等
        System.out.println(w == y );// false == 比较引用类型的时候比较的是地址值，两个都是new出来的不同对象，所以为false


        System.out.println("------------------------------");
        Integer a = Integer.valueOf(200);
        Integer b = Integer.valueOf(200);
        System.out.println("a == b  :  " + ( a == b )); //false

    }
}
